home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / TUTORIAL.BIN / KeyPressManagerPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-16  |  4.8 KB  |  313 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Button;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Event;
  7. import java.awt.Label;
  8. import java.awt.Panel;
  9. import java.awt.TextComponent;
  10. import java.util.Vector;
  11.  
  12. public class KeyPressManagerPanel extends Panel {
  13.    public static final int PLAIN = 0;
  14.    public static final int SHIFT = 1;
  15.    public static final int CTRL = 2;
  16.    Vector tabbed;
  17.    Button defaultButton;
  18.    Button cancelButton;
  19.    Event defaultEvent;
  20.    Event cancelEvent;
  21.    Event[] fKeyEvents = new Event[36];
  22.    Container defaultDeliver;
  23.    Container cancelDeliver;
  24.    Container[] fKeyDeliver = new Container[36];
  25.    boolean bDefaultSetFocus;
  26.    boolean bCancelSetFocus;
  27.    boolean bTabHack;
  28.    boolean bAutoTab = true;
  29.    Event eventLostFocus;
  30.  
  31.    public KeyPressManagerPanel() {
  32.       this.resetKeyManager();
  33.    }
  34.  
  35.    public void setAutoTabState(boolean var1) {
  36.       this.bAutoTab = var1;
  37.    }
  38.  
  39.    public boolean getAutoTabState() {
  40.       return this.bAutoTab;
  41.    }
  42.  
  43.    public synchronized boolean handleEvent(Event var1) {
  44.       switch (var1.id) {
  45.          case 401:
  46.             this.bTabHack = false;
  47.             if (this.keyPressed(var1)) {
  48.                return true;
  49.             }
  50.             break;
  51.          case 402:
  52.             if (this.bTabHack) {
  53.                this.bTabHack = false;
  54.                this.eventLostFocus.key = var1.key;
  55.                this.eventLostFocus.modifiers = var1.modifiers;
  56.                if (this.keyPressed(this.eventLostFocus)) {
  57.                   return true;
  58.                }
  59.             }
  60.             break;
  61.          case 403:
  62.             int var2 = var1.key - 1008;
  63.             switch (var1.modifiers) {
  64.                case 0:
  65.                   break;
  66.                case 1:
  67.                   var2 += 12;
  68.                   break;
  69.                case 2:
  70.                   var2 += 24;
  71.                   break;
  72.                default:
  73.                   var2 = -1;
  74.             }
  75.  
  76.             if (var2 > -1 && var2 < 36 && this.fKeyEvents[var2] != null) {
  77.                this.deliverEventTo(this.fKeyEvents[var2], this.fKeyDeliver[var2]);
  78.                return true;
  79.             }
  80.             break;
  81.          case 1005:
  82.             if (var1.target instanceof TextComponent) {
  83.                this.eventLostFocus = var1;
  84.                this.bTabHack = true;
  85.             }
  86.       }
  87.  
  88.       return super.handleEvent(var1);
  89.    }
  90.  
  91.    boolean keyPressed(Event var1) {
  92.       switch (var1.key) {
  93.          case 9:
  94.             if (var1.target instanceof Component) {
  95.                return this.doTab((Component)var1.target, var1.modifiers);
  96.             }
  97.  
  98.             return this.doTab(this, var1.modifiers);
  99.          case 10:
  100.             if (this.defaultButton != null && this.defaultButton.isEnabled()) {
  101.                if (this.bDefaultSetFocus) {
  102.                   this.defaultButton.requestFocus();
  103.                }
  104.  
  105.                this.deliverEventTo(this.defaultEvent, this.defaultDeliver);
  106.                return true;
  107.             }
  108.             break;
  109.          case 27:
  110.             if (this.cancelButton != null && this.cancelButton.isEnabled()) {
  111.                if (this.bCancelSetFocus) {
  112.                   this.cancelButton.requestFocus();
  113.                }
  114.  
  115.                this.deliverEventTo(this.cancelEvent, this.cancelDeliver);
  116.                return true;
  117.             }
  118.       }
  119.  
  120.       return false;
  121.    }
  122.  
  123.    public void resetKeyManager() {
  124.       this.tabbed = new Vector();
  125.       this.defaultButton = null;
  126.       this.cancelButton = null;
  127.       this.defaultEvent = null;
  128.       this.cancelEvent = null;
  129.       this.defaultDeliver = null;
  130.       this.cancelDeliver = null;
  131.       this.bDefaultSetFocus = false;
  132.       this.bCancelSetFocus = false;
  133.  
  134.       for(int var1 = 0; var1 < 36; ++var1) {
  135.          this.fKeyEvents[var1] = null;
  136.          this.fKeyDeliver[var1] = null;
  137.       }
  138.  
  139.    }
  140.  
  141.    public Component add(Component var1) {
  142.       if (this.bAutoTab && !(var1 instanceof Label)) {
  143.          this.setTabStop(var1);
  144.       }
  145.  
  146.       return super.add(var1);
  147.    }
  148.  
  149.    public void removeDefaultButton() {
  150.       this.defaultButton = null;
  151.       this.defaultEvent = null;
  152.       this.defaultDeliver = null;
  153.       this.bDefaultSetFocus = false;
  154.    }
  155.  
  156.    public void setTabStop(Component var1) {
  157.       if (var1 != this) {
  158.          this.tabbed.addElement(var1);
  159.       }
  160.  
  161.    }
  162.  
  163.    public void setDefaultButton(Button var1) {
  164.       this.setDefaultButton(var1, new Event(var1, 1001, (Object)null), (Container)null, true);
  165.    }
  166.  
  167.    public void setDefaultButton(Button var1, Event var2, Container var3, boolean var4) {
  168.       this.defaultButton = var1;
  169.       this.defaultEvent = var2;
  170.       this.defaultDeliver = var3;
  171.       this.bDefaultSetFocus = var4;
  172.       ((Component)var1).requestFocus();
  173.    }
  174.  
  175.    public void setCancelButton(Button var1) {
  176.       this.setCancelButton(var1, new Event(var1, 1001, (Object)null), (Container)null, true);
  177.    }
  178.  
  179.    public void setCancelButton(Button var1, Event var2, Container var3, boolean var4) {
  180.       this.cancelButton = var1;
  181.       this.cancelEvent = var2;
  182.       this.bCancelSetFocus = var4;
  183.       this.cancelDeliver = var3;
  184.    }
  185.  
  186.    public void removeCancelButton() {
  187.       this.cancelButton = null;
  188.       this.cancelEvent = null;
  189.       this.cancelDeliver = null;
  190.       this.bCancelSetFocus = false;
  191.    }
  192.  
  193.    public void setFKeyEvent(int var1, Event var2, Container var3) {
  194.       this.setFKeyEvent(var1, 0, var2, var3);
  195.    }
  196.  
  197.    public void removeFKeyEvent(int var1) {
  198.       this.removeFKeyEvent(var1, 0);
  199.    }
  200.  
  201.    public void setFKeyEvent(int var1, int var2, Event var3, Container var4) {
  202.       int var5 = var1 - 1008;
  203.       if (var5 >= 0 && var5 <= 11) {
  204.          switch (var2) {
  205.             case 0:
  206.             default:
  207.                break;
  208.             case 1:
  209.                var5 += 12;
  210.                break;
  211.             case 2:
  212.                var5 += 24;
  213.          }
  214.  
  215.          this.fKeyEvents[var5] = var3;
  216.          this.fKeyDeliver[var5] = var4;
  217.       }
  218.    }
  219.  
  220.    public void removeFKeyEvent(int var1, int var2) {
  221.       int var3 = var1 - 1008;
  222.       if (var3 >= 0 && var3 <= 11) {
  223.          switch (var2) {
  224.             case 0:
  225.             default:
  226.                break;
  227.             case 1:
  228.                var3 += 12;
  229.                break;
  230.             case 2:
  231.                var3 += 24;
  232.          }
  233.  
  234.          this.fKeyEvents[var3] = null;
  235.          this.fKeyDeliver[var3] = null;
  236.       }
  237.    }
  238.  
  239.    void deliverEventTo(Event var1, Container var2) {
  240.       if (var2 == null) {
  241.          ((Component)this).postEvent(var1);
  242.       } else {
  243.          ((Component)var2).postEvent(var1);
  244.       }
  245.    }
  246.  
  247.    boolean doTab(Component var1, int var2) {
  248.       int var3 = this.tabbed.size();
  249.       if (var3 > 0 && (var2 == 0 || var2 == 1)) {
  250.          Object var4 = null;
  251.          int var5 = this.tabbed.indexOf(var1);
  252.          int var6 = var5;
  253.          if (var5 == -1) {
  254.             for(Object var7 = var1; var7 != this && var5 == -1; var7 = ((Component)var7).getParent()) {
  255.                var5 = this.tabbed.indexOf(var7);
  256.             }
  257.          }
  258.  
  259.          if (var5 == -1) {
  260.             if (var2 == 0) {
  261.                this.doTab((Component)this.tabbed.lastElement(), var2);
  262.             } else {
  263.                this.doTab((Component)this.tabbed.firstElement(), var2);
  264.             }
  265.  
  266.             return true;
  267.          }
  268.  
  269.          int var14 = var5;
  270.  
  271.          while(true) {
  272.             if (var2 == 0) {
  273.                ++var5;
  274.                if (var5 == var3) {
  275.                   var5 = 0;
  276.                }
  277.             } else {
  278.                --var5;
  279.                if (var5 == -1) {
  280.                   var5 = var3 - 1;
  281.                }
  282.             }
  283.  
  284.             if (var14 == var5) {
  285.                break;
  286.             }
  287.  
  288.             try {
  289.                Component var12 = (Component)this.tabbed.elementAt(var5);
  290.                if (var12.isEnabled()) {
  291.                   var12.requestFocus();
  292.                   if (var12 instanceof TextComponent) {
  293.                      TextComponent var8 = (TextComponent)var12;
  294.                      var8.selectAll();
  295.                   }
  296.  
  297.                   Component var15 = (Component)this.tabbed.elementAt(var6);
  298.                   Event var9 = new Event(var15, 1005, (Object)null);
  299.                   var15.postEvent(var9);
  300.                   var12 = (Component)this.tabbed.elementAt(var5);
  301.                   Event var10 = new Event(var12, 1004, (Object)null);
  302.                   var12.postEvent(var10);
  303.                   return true;
  304.                }
  305.             } catch (ArrayIndexOutOfBoundsException var11) {
  306.             }
  307.          }
  308.       }
  309.  
  310.       return false;
  311.    }
  312. }
  313.